package com.mycase.im.boot.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mycase.im.boot.entity.database.ImChatGroup;
import com.mycase.im.boot.entity.database.ImChatGroupUser;
import com.mycase.im.boot.entity.database.ImMessage;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * @Author ZhuHJay
 * @Date 2021/8/21 10:06
 */
public interface MessageService extends IService<ImMessage> {

    /**
     * 获取和该好友得聊天记录
     * @param id 本人id
     * @param fId 好友id
     * @return 聊天记录
     */
    List<ImMessage> getMessageRecord(String id, String fId);

    /**
     * 获取我未读的消息条数
     * @param fromId 发送人 -> 好友
     * @param toId 接收人 -> 我
     * @return 记录条数
     */
    Integer getMessageUnReadCount(String fromId, String toId);


    /**
     * 将未读消息转换为已读
     * @param fromId 好友id
     * @param toId 我的id
     */
    void unReadMessageConvert(String fromId, String toId);

    /**
     * 获取群聊消息记录(未删除)
     * @param id 用户id
     * @param group 群聊
     */
    void getGroupMessageRecord(String id, ImChatGroup group);

    /**
     * 创建群聊消息并持久化
     * @param message 客户端传递的数据
     * @return 返回该消息面向的用户
     */
    List<ImChatGroupUser> createdGroupMessage(ImMessage message);

    /**
     * 获取邀请的消息通知
     * @param groupId 群id
     * @param fromId 发送人
     * @param inviteCount 邀请人数
     * @return 消息通知集合
     */
    List<ImMessage> getInviteNotifyMessage(String groupId, String fromId, int inviteCount);
}
